#pragma once
#include<glad/glad.h>
#include<opencv2/opencv.hpp>

using namespace cv;
class GLBase
{
public:
	GLBase()
	{
		m_ProgramObj = 0;
		m_VertexShader = 0;
		m_FragmentShader = 0;

		m_SurfaceWidth = 0;
		m_SurfaceHeight = 0;

	}

	virtual ~GLBase()
	{

	}

	virtual void Init(int width, int height) = 0;
	virtual void onDrawFrameBegin() = 0;
	virtual Mat Draw(Mat frame) = 0;

	virtual void Destroy() = 0;

protected:
	GLuint m_VertexShader;
	GLuint m_FragmentShader;
	GLuint m_ProgramObj;
	int m_SurfaceWidth;
	int m_SurfaceHeight;
};